<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
    <title>NOTE | jouyouyun&#39;s blog</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1">
    <meta name="description" content="jouyouyun&#39;s blog.">
    <meta name="generator" content="Hugo 0.105.0">
    
    
    
    
      <meta name="robots" content="noindex, nofollow">
    

    
<link rel="stylesheet" href="/ananke/css/main.min.css" >



    
    
    
      

    

    
    
      <link href="/categories/note/index.xml" rel="alternate" type="application/rss+xml" title="jouyouyun&#39;s blog" />
      <link href="/categories/note/index.xml" rel="feed" type="application/rss+xml" title="jouyouyun&#39;s blog" />
      
    
    
    <meta property="og:title" content="NOTE" />
<meta property="og:description" content="jouyouyun&#39;s blog." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jouyouyun.github.io/categories/note/" />

<meta itemprop="name" content="NOTE">
<meta itemprop="description" content="jouyouyun&#39;s blog."><meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="NOTE"/>
<meta name="twitter:description" content="jouyouyun&#39;s blog."/>

	
  </head>

  <body class="ma0 avenir bg-near-white">

    

  <header>
    <div class="pb3-m pb6-l bg-black">
      <nav class="pv3 ph3 ph4-ns" role="navigation">
  <div class="flex-l justify-between items-center center">
    <a href="/" class="f3 fw2 hover-white no-underline white-90 dib">
      
        jouyouyun&#39;s blog
      
    </a>
    <div class="flex-l items-center">
      

      
        <ul class="pl0 mr3">
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/post/" title="Archives 页">
              Archives
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/tags/" title="Tags 页">
              Tags
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/categories/" title="Categories 页">
              Categories
            </a>
          </li>
          
        </ul>
      
      
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>

    </div>
  </div>
</nav>

      <div class="tc-l pv3 ph3 ph4-ns">
        <h1 class="f2 f-subheadline-l fw2 light-silver mb0 lh-title">
          NOTE
        </h1>
        
      </div>
    </div>
  </header>


    <main class="pb7" role="main">
      
  <article class="cf pa3 pa4-m pa4-l">
    <div class="measure-wide-l center f4 lh-copy nested-copy-line-height nested-links mid-gray">
      <p>标签为“NOTE”的页面如下</p>
    </div>
  </article>
  <div class="mw8 center">
    <section class="flex-ns flex-wrap justify-around mt5">
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        三月 15, 2020
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/dde-daemon-tutorial/" class="link black dim">
        DDE 后端 Tutorial
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      dde 后端使用 go 作为主要的开发语言，使用 dbus 提供接口，主要使用 gsettings 来保存配置。所以在进行后端开发前需要对以上内容有基本的了解，这里假定本文档的阅读者熟悉 dbus 和 gsettings ，并有一定的开发经验。
这里就只对 go 进行简单的介绍。
go go 是一种类 c 的语言，但没有了 c 中令人头疼的指针和内存管理问题，极大的提高了开发效率。 go 中使用 package 来封装同一功能的模块，首字母大写的变量和函数是可以被其它 package 使用的。
学习 go 至少需要了解以下内容。
编码风格 go 提供了 gofmt 工具来对代码进行格式化，以使用统一的代码风格。因此在代码保存之前需要使用 gofmt 先进行格式化。
保存前格式化这种操作，一般可在编辑器中配置，如 vim , emacs 等，根据个人习惯选择编辑器。
变量 go 支持使用时声明和使用 var 声明两种方式，如下：
使用 var 声明 // 主动声明 var ( outData []byte err error ) outData, err = os.Exec(&#34;ls&#34;).Output() 使用时声明 // 使用时声明 outData, err := os.
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        十一月 28, 2019
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/learning_exercise/" class="link black dim">
        Learning Exercise
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      学习一种新语言，或者学习内核，可按照以下内容做题练习。
类型转换 number(int,float) to string string to number 大数相加(数的值接近类型最大值,相加后超过最大值) 字符串操作 split append string list join replace lowercase uppercase 常见数据结构 栈 创建及使用 链表 创建及使用 反序 环检查 两个链表是否相交 队列 创建及使用 字典 创建及使用 文件操作 文件读写 文件内容查找 获取整个文件内容(需要考虑大文件) 常用配置解析 json 读写 yaml 读写 ini 读写 时间 时间获取 时间戳获取及转换 定时器使用 自旋锁 会一直自旋直到获取到锁，期间不会陷入 sleep
互斥锁 获取不到锁时会陷入 sleep
多进程 进程创建 进程同步 进程间共享 多线程 线程创建 线程间交互 线程同步 
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        八月 28, 2019
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/debian-cve-tracker/" class="link black dim">
        Debian CVE Tracker
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p><a href="https://security-tracker.debian.org/tracker/status/release/stable">Debian CVE Tracker</a> 上记录了很多安全漏洞，有些 <code>Debian</code> 会在当前版本修复，但有些不会。由于 <code>deepin</code> 会在当前版本上停留很久，所以需要修复这些安全漏洞。这就需要自行追踪 <code>CVE Bug</code> 的状态和添加 <code>patch</code> ，因此写了个程序 <a href="https://github.com/deepin-cve/tracker">deepin-cve-tracker</a> 来管理。</p>
<p>本文将介绍 <code>deepin-cve-tracker</code> 的使用方法和 <code>patch</code> 的添加方法。</p>
<h2 id="deepin-cve-tracker">Deepin CVE Tracker</h2>
<p><code>deepin-cve-tracker</code> 设计用来追踪 <code>Debain CVE Bug</code> ，会先将 <code>Debian</code> 中的数据爬入自己的数据库中，然后做标记来追踪 <code>bug</code> 的处理状态。提供 <code>HTTP</code> 接口供用户使用，使用 <code>docker</code> 部署。</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        五月 2, 2019
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/installation/" class="link black dim">
        系统安装二三事
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>在重装系统时, 需要考虑软件与数据的备份恢复, 遂记录下需要用到的软件, 自定义的配置和数据恢复.</p>
<h2 id="软件">软件</h2>
<h3 id="换源">换源</h3>
<ul>
<li><code>Archlinux</code></li>
</ul>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        十二月 2, 2018
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/python-learn-note/" class="link black dim">
        python3 学习笔记
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <h2 id="python3-study-notes">Python3 Study Notes</h2>
<p>本人很少写 <code>python</code> 代码, 一般都是用 <code>go</code> 的, 去年时用 <code>python</code> 写过一些收集系统信息的工具, 当时是边看手册边写的. 如今又要用 <code>python</code> 来写一个生成 <code>xlsx</code> 的工具, 就又需要查看手册了, 至于为什么不用 <code>go</code> 写? 那是因为 <code>go</code> 的库不兼容永中. 在这里不得不说, 虽然 <code>go</code> 很火, 但是一些库还是不如 <code>python</code> 多, 不如 <code>python</code> 兼容性好.</p>
<p>为了避免以后再出这种事情, 这次就好好的了解下 <code>python</code>, 将它的用法按照自己对语言的理解分块记录下来. 要使用某种语言, 个人认为需要了解这些方面:</p>
<ul>
<li>编码风格</li>
<li>变量的类型, 声明及使用方式</li>
<li>输入/输出</li>
<li>控制语句的写法</li>
<li>错误处理的用法</li>
<li>函数的用法, 还有语言支持的一些特性, <code>python</code> 中就有装饰器, <code>lambda</code> 语句等</li>
<li>对于面向对象语言还需要了解类的声明, 继承, 多态等的用法</li>
</ul>
<p>还有一些就是此语言的一些特性, <code>python</code> 就还需要了解以下特性:</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        十一月 27, 2018
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-package-management/" class="link black dim">
        Go 包管理之gom
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <h2 id="go-module-使用">Go Module 使用</h2>
<p><code>Go Module</code> 是官方用来管理 <code>package</code> 依赖的工具, <code>1.11</code> 新加的, 使用时需要设置变量: <code>GO111MODULE=on</code> .</p>
<p><code>go mod help</code> 可以查看其帮助文档:</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        十一月 13, 2018
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/linux-signal-example/" class="link black dim">
        Linux Signal Examples
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>信号是系统响应某些条件而产生的一个事件，接收到该信的进程做出相应的处理。通常信是由错误产生的，如段错误(<code>SIGSEGV</code>)。 但信还可以作为进程间通信的一种方式，由一个进程发送给另一个进程。</p>
<p>信号定义在 <code>signal.h</code> 文件中，以 <code>SIG</code> 作为开头，可用 <code>kill -l</code> 命令查看，详细信息参见 <a href="http://man7.org/linux/man-pages/man7/signal.7.html">man 7 signal</a> 。</p>
<h2 id="信号处理">信号处理</h2>
<p>信号可以通过 <code>signal</code> 和 <code>sigaction</code> 函数来注册处理， <code>signal</code> 函数是 <code>struct sigaction</code> 中 <code>sa_handler</code> 的一种便捷实现。</p>
<h3 id="signal-函数"><code>signal</code> 函数</h3>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        四月 8, 2018
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/cups-notes/" class="link black dim">
        CUPS 资料
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <h2 id="installation">Installation</h2>
<p><code>sudo apt install cups ghostscript gsfonts</code></p>
<h2 id="driver">Driver</h2>
<ul>
<li>
<p>gutenprint</p>
<p>一组质量非常好的驱动集合，支持的目标机型包括 <code>Canon, Epson, Lexmark, Sony, Olympus</code> ；以及配合 <code>CUPS/GhostSscript/Foomatic/GIMP</code> 使用的 <code>PCL printers</code> 。</p>
<p>安装包: <code>cups-driver-gutenprint gimp-gutenprint ijsgutenprint printer-driver-gutenprint</code></p>
</li>
<li>
<p>foomatic</p>
<p><code>Foomatic</code> 是一个基于数据库的，集成自由软件打印机驱动和脱机打印程序的系统。</p>
<p>安装包: <code>foomatic-db foomatic-db-engine foomatic-db-compressed-ppds foomatic-db-gutenprint foomatic-filters</code> 以及 <code>foomatic-db-nonfree</code></p>
</li>
</ul>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        六月 6, 2016
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/xrandr-examples/" class="link black dim">
        XRandr Examples
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>由于经常会用到使用 <code>xrandr</code> 设置屏幕属性, 而每次用的时候都要去查 <code>man</code> 手册, 有时还需要上网搜索例子.
这样一来就比较麻烦, 所以就想整理下 <code>xrandr</code> 的用法, 给出一些常用的例子.</p>
<h2 id="查询">查询</h2>
<p>使用 <code>xrandr -q</code> 命令可以查询当前的显示器状态, 使用 <code>xrandr --verbose</code> 将会显示更详细的信息.</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        二月 3, 2016
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/debug-summary/" class="link black dim">
        Debug 小结
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>调试 <code>bug</code> 的时候要有耐心, 要不断测试, 直到找到问题原因.</p>
<h2 id="基本思路">基本思路</h2>
<h3 id="确定-bug-出现的方式">确定 <code>bug</code> 出现的方式</h3>
<ul>
<li>一定要找到稳定重现的方式, 这样才能方便下面的调试</li>
<li>如果找不到稳定重现的方法就只能根据上次出现的情形, 去查看相关的代码, 猜测可能出问题的地方, 然后针对那一块进行调试, 直到找到稳定重现方式</li>
</ul>
<h3 id="定位出问题的代码">定位出问题的代码</h3>
<ul>
<li>再找到稳定重现方式后, 开始定位出问题的函数, 然后加入调试信息, 不断尝试, 直到找到有问题的代码</li>
<li>找到有问题的代码后, 如果发现是第三方库里的函数,可以打印出每次调用的输入输出参数, 看看是否有迹可循, 可以单独写个小程序, 传入问题的参数, 进行不断测试, 来确定第三方库有没有问题</li>
<li>如果自己程序的代码, 就一行一行的慢慢测试, 确定问题的原因, 原因找到了就可以开始思考解决方法了</li>
</ul>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        二月 3, 2016
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/xsetwacom-options/" class="link black dim">
        xsetwacom 选项说明
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p><code>xsetwacom</code> 是一个设置数位板的命令行工具, 在 <code>Debian/Ubuntu/deepin</code> 上可以通过安装 <code>xserver-xorg-input-wacom</code> 来获取它.</p>
<p>可以通过 <code>man xsetwacom</code> 看到它的帮助文档, 下面就简单说明下它的部份选项:</p>
<hr>
<h2 id="options">Options</h2>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        七月 20, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-tcp-socket-example/" class="link black dim">
        Go 笔记: 简单的 TCP Socket 示例
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>一个简单的 <code>TCP Socket</code> 的示例，使用 <code>gob</code> 处理传输的数据。</p>
<h2 id="server-dot-go"><code>server.go</code></h2>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        七月 7, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-gob-rw-file/" class="link black dim">
        Go 笔记: Gob Write/Read File
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p><code>Gob</code> 使用实例，将结构体写入文件里，在需要的时候再从文件中读取出来。</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        七月 5, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/chroot-shell/" class="link black dim">
        chroot 脚本
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>最近测试了以下 <code>chroot</code> ，然后把步骤写成了下面两个脚本，方便以后使用。</p>
<p><strong>使用时需要确定每条命令都执行成功了</strong></p>
<p><code>Arch</code> 分区结构</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>/dev/sda5	/
</span></span><span style="display:flex;"><span>/dev/sda1	/boot
</span></span><span style="display:flex;"><span>/dev/sda6	/home
</span></span><span style="display:flex;"><span>/dev/sda8	Swap
</span></span></code></pre></div>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        六月 22, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-md5-sum/" class="link black dim">
        Go 笔记: md5 sum
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>使用 Go 语言实现字符串与文件的 MD5 值计算，但是大文件不要使用此方法。</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        六月 20, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-file-exist/" class="link black dim">
        Go 笔记: 判断文件是否存在
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>使用 GoLang 判断文件是否存在。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#f92672">package</span> <span style="color:#a6e22e">utils</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> (
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;os&#34;</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">func</span> <span style="color:#a6e22e">isFileExist</span>(<span style="color:#a6e22e">filename</span> <span style="color:#66d9ef">string</span>) <span style="color:#66d9ef">bool</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> len(<span style="color:#a6e22e">filename</span>) &lt; <span style="color:#ae81ff">1</span> {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">_</span>, <span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">os</span>.<span style="color:#a6e22e">Stat</span>(<span style="color:#a6e22e">filename</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#a6e22e">err</span> <span style="color:#f92672">==</span> <span style="color:#66d9ef">nil</span> <span style="color:#f92672">||</span> <span style="color:#a6e22e">os</span>.<span style="color:#a6e22e">IsExist</span>(<span style="color:#a6e22e">err</span>)
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        六月 20, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/go-uri-encode/" class="link black dim">
        Go 笔记: URI Encode/Decode
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>最近在处理路径时，要求统一用 <code>URI</code> (通用资源标识符) 的格式来表示。偶尔会遇到 URI 被编码的情况，这就需要解码了，故在此把 <code>Encode/Decode URI</code> 的方法记录在此，以备后用。</p>
    </div>
  </div>

        </div>
      
        <div class="relative w-100  mb4 bg-white">
            <div class="mb3 pa4 mid-gray overflow-hidden">
    
      <div class="f6">
        四月 18, 2014
      </div>
    
    <h1 class="f3 near-black">
      <a href="/post/xrecord-example/" class="link black dim">
        XRecord 示例
      </a>
    </h1>
    <div class="nested-links f5 lh-copy nested-copy-line-height">
      <p>最近在做快捷键绑定的项目，但在绑定单按键时发现 <code>XGrabKey</code> 无法处理。遂请教组长，得知 <code>XRecord</code> 可以处理，于是就去查找 <code>XRecord</code> 的相关资料，但却很少。
所以在此记录一下整理的示例代码，以便日后查看，其功能在代码注释中写出。</p>
    </div>
  </div>

        </div>
      
    </section>
  </div>

    </main>
    <footer class="bg-black bottom-0 w-100 pa3" role="contentinfo">
  <div class="flex justify-between">
  <a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href="https://jouyouyun.github.io" >
    &copy;  jouyouyun 2023 
  </a>
    <div>
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>
</div>
  </div>
</footer>

  </body>
</html>
